avatar
nazgol mmm

کاربر

  • 1400/02/11
  • 0
  • 333
1400/02/11 |
backend
asp

به ستون های جدول اضافه نمیشود

        protected override void OnModelCreating(ModelBuilder builder)
        {

            foreach (var entityType in builder.Model.GetEntityTypes())
            {
                if (entityType.ClrType.GetCustomAttributes(typeof(AuditableAttribute), true).Length > 0)
                {
                    builder.Entity(entityType.Name).Property<DateTime?>("InsertTime");
                    builder.Entity(entityType.Name).Property<DateTime?>("UpdateTime");
                    builder.Entity(entityType.Name).Property<DateTime?>("DeleteTime");
                    builder.Entity(entityType.Name).Property<bool>("IsDeleted");

                }
            }

            base.OnModelCreating(builder);
        }

        public override int SaveChanges()
        {
            var modifiedEntries = ChangeTracker.Entries().Where(a => a.State == EntityState.Modified ||
              a.State == EntityState.Deleted ||
              a.State == EntityState.Added);
            foreach(var item in modifiedEntries)
            {
                var entityType = item.Context.Model.FindEntityType(item.Entity.GetType());
                var inserted = entityType.FindProperty("InsertTime");
                var updated = entityType.FindProperty("UpdateTime");
                var removed = entityType.FindProperty("DeleteTime");
                var IsRemoved = entityType.FindProperty("IsDeleted");

                if(item.State==EntityState.Added && inserted!=null)
                {
                    item.Property("InsertTime").CurrentValue = DateTime.Now;
                }
                if (item.State == EntityState.Modified && updated != null)
                {
                    item.Property("UpdateTime").CurrentValue = DateTime.Now;
                }
                if (item.State==EntityState.Deleted && IsRemoved!=null && removed!=null)
                {
                    item.Property("DeleteTime").CurrentValue = DateTime.Now;
                    item.Property("IsDeleted").CurrentValue = true;
                }               
            }
            return base.SaveChanges();
        }


add-migration و update-database را هم بزنید که تغییرات بر روی دیتابیس اعمال شود



پاسخی برای این باگ ارسال کنید

لطفا کدها را درون قطعه کد ارسال نمایید

برای ارسال پاسخ باید وارد حساب کاربری خود شوید
ورود به حساب کاربری